package greate.project;

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;

/**
 *
 * 指定bean的方法来调用02
 * @author v_zhangshun01
 */
public class BeanApp02 {

    public static void main(String[] args) throws Exception {

        // 创建默认上下文
        CamelContext context = new DefaultCamelContext();

        // 现开启想表达的是 ， camel 在开启后可以动态的新增和关闭路由。
        context.start();

        // 提前绑定bean。
        context.getRegistry().bind("myBean" , new HellWorldBean());

        // 提前绑定bean。
        context.getRegistry().bind("myBean02" , new HellWorldBean02());


        // 新增路由
        context.addRoutes(new HelloWorldRoute());

        synchronized (BeanApp02.class){
            BeanApp02.class.wait();
        }


    }

    static class HelloWorldRoute extends RouteBuilder {
        @Override
        public void configure() throws Exception {
            from("timer:foo")
                    .setBody(constant(" message "))
                    // 如果bean 只有一个方法 不需要指定 如果有多个方法需要指定method。
                    .bean("myBean")

                    // 由于有两个方法，故指定具体的执行的方法
                    .bean("myBean02" , "bean1")

                    .log("${body}");
        }
    }

    static class HellWorldBean{

        public String bean(String bean){
            System.out.println("hello world bean :" + bean);
            return bean + "!";
        }



    }

    static class HellWorldBean02{


        public String bean1(String bean){
            System.out.println("hello world bean02 :" + bean);
            return bean + "!02！";
        }

        public String bean2(String bean){
            System.out.println("hello world bean :" + bean);
            return bean + "!02";
        }

    }

}
